package com.suapi.project.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.suapi.project.model.dto.userInterfaceInfo.UserInterfaceInfoVOQueryRequest;
import com.suapi.project.model.vo.UserInterfaceInfoVO;
import com.suapi.suapicommon.model.entity.UserInterfaceInfo;

/**
* @author xidian
* @description 针对表【user_interface_info(用户调用接口关系)】的数据库操作Service
* @createDate 2025-04-09 16:02:35
*/
public interface UserInterfaceInfoService extends IService<UserInterfaceInfo> {

    /**
     * 参数校验
     * @param userInterfaceInfo
     * @param b
     */
    void validUserInterfaceInfo(UserInterfaceInfo userInterfaceInfo, boolean b);

    /**
     * 是否有调用次数
     * @param interfaceInfoId
     * @param userId
     * @return
     */
    //boolean isHaveTimes(long interfaceInfoId,long userId);
    int isHaveTimes(long interfaceInfoId,long userId);

    /**
     * 获取状态
     * @param interfaceInfoId
     * @param userId
     * @return
     */
    int getUserInterfaceInfoStatus(long interfaceInfoId,long userId);

    /**
     * 调用次数减一
     * @param interfaceInfoId
     * @param userId
     * @return
     */
    boolean invokeCount(long interfaceInfoId,long userId, int haveTimes);

    /**
     * 分页获取列表，联合查询（任何人可以访问）
     * @param userInterfaceInfoVOQueryRequest
     * @return
     */
    Page<UserInterfaceInfoVO> listUserInterfaceInfoVOByPage(UserInterfaceInfoVOQueryRequest userInterfaceInfoVOQueryRequest);

    /**
     * 修改状态（仅管理员访问）
     * @param id
     * @return
     */
    Boolean alertUserInterfaceInfoStatus(Long id);
}
